package com.archie.zhufengfm.adapters;

/**
 * Created by Archie on 2015/10/22.
 */

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ImageView;

import com.archie.zhufengfm.R;
import com.archie.zhufengfm.utils.DimensionUtil;

import java.util.List;

/**
 * 轮播海报的 ViewPager Adapter
 */
public class PicPagerAdapter extends PagerAdapter {

    private List picData;

    public PicPagerAdapter(List picData) {
        this.picData = picData;
    }

    @Override
    public int getCount() {
        int ret = 0;

        if (picData != null) {
            if (!picData.isEmpty()) {

                // 使用整形最大值，来描述一个假的循环
                ret = Integer.MAX_VALUE;

            }
        }

        return ret;

    }

    /**
     * 判断 View 是否是通过/或者由 Object 创建出来的
     * 通常对于只返回 View 的 PagerAdapter，那么可以简写成 view == object
     * @param view  ViewPager 内部管理的一个View
     * @param object  由 instantiateItem（）返回的对象
     * @return
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    /**
     * 根据指定的位置创建一个对象，这个对象可以就是View，也可以是管理View的对象
     * 例如 Fragment,
     * 最终在方法返回之前，一定要将实际的View，添加到container，
     * 并且，永远不要调用 super
     * @param container
     * @param position
     * @return
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = container.getContext();

        // TODO 因位getCount（）返回了整形最大值，实际数据个数是有限的
        // 利用 position % 数据个数，从而映射成实际数据的索引
        int index = position % picData.size();

        // TODO 根据index获取点击的位置，以及数据

        ImageView ret = new ImageView(context);

        ret.setImageResource(R.mipmap.ic_launcher);

        ViewGroup.LayoutParams lp =
                new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        DimensionUtil.dp2px(context, 60)
                );

        ret.setLayoutParams(lp);

        container.addView(ret);

        return ret;
    }

    /**
     * 销毁对象，从容器删除视图
     * @param container
     * @param position
     * @param object
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}
